package demo03;

import java.io.File;
import java.io.IOException;

/*
 *  File类的创建/删除功能相关方法：
 *      public boolean createNewFile()：当且仅当具有该名称的文件尚不存在时，创建一个新的空文件
 *      public boolean delete()：删除由此File表示的文件或目录
 *      public boolean mkdir()：创建单级空文件夹
 *      public boolean mkdirs()：可创建单级空文件夹，也可创建多级文件夹
 */
public class Demo05File {
    public static void main(String[] args) {
        /*
         *  public boolean createNewFile()：当且仅当具有该名称的文件尚不存在时，创建一个新的空文件
         *      创建文件的路径和文件名需要在构造方法中给出（构造方法的路径参数）
         *      返回值：布尔值
         *          文件不存在：创建该文件，返回true
         *          文件存在：不创建该文件，返回false
         *      注意：
         *          1. 此方法只能创建文件，不能创建文件夹
         *          2. 创建文件时指定的路径必须存在，否则会抛出IOException异常
         *          3. 该方法声明抛出IOException异常，调用该方法，就必须处理（throws/try...catch）
         */
        try {
            System.out.println(new File("file\\a.txt").createNewFile()); // true，创建“a.txt”文件成功
            System.out.println(new File("file\\新建文件夹").createNewFile()); // true，创建“新建文件夹”文件成功，这不是一个文件夹
            System.out.println(new File("f\\a.txt").createNewFile()); // IOException: 系统找不到指定的路径
        } catch (IOException e) {
            e.printStackTrace();
        }

        /*
         *  public boolean mkdir()：创建单级空文件夹
         *  public boolean mkdirs()：可创建单级空文件夹，也可创建多级文件夹
         *      创建文件夹的路径和文件夹名需要在构造方法中给出（构造方法的路径参数）
         *      返回值：布尔值
         *          文件夹不存在：创建该文件夹，返回true
         *          文件夹存在：不创建该文件夹，返回false
         *          路径不存在（仅mkdir方法）：创建不了该文件夹，返回false
         *      注意：
         *          此方法只能创建文件夹，不能创建文件
         */
        System.out.println(new File("file\\A").mkdir()); // true，创建"A"文件夹成功
        System.out.println(new File("file\\B\\C\\D").mkdirs()); // true，创建"B\C\D"多级文件夹成功
        System.out.println(new File("file\\ABC.txt").mkdir()); // true，创建"ABC.txt"文件夹成功
        System.out.println(new File("f\\B").mkdir()); // false，创建失败，（父级）路径不存在

        /*
         *  public boolean delete()：删除由此File表示的文件或目录
         *      此方法可以删除构造方法中路径给出的结尾文件/文件夹
         *      返回值：布尔值
         *          路径正确，文件夹内无内容：返回true
         *          路径正确，文件夹内有内容（有其他文件/文件夹）：返回false
         *          路径不存在：返回false
         *      注意：
         *          delete方法是直接从硬盘上删除文件/文件夹的，不走回收站，使用需谨慎
         */
        System.out.println(new File("file\\新建文件夹").delete()); // true，删除"新建文件夹"文件成功
        System.out.println(new File("file\\ABC.txt").delete()); // true，删除"ABC.txt"文件夹成功
        System.out.println(new File("f\\a.txt").delete()); // false，删除失败，路径不存在
    }
}
